package top.jiangqiang.qyblog.core.domain.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serial;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author jiangqiang
 * @date 2022-12-08
 */
@Data
@Accessors(chain = true)
@Schema(name = "批量上传文件相关接口响应结果", description = "异步上传时，有可能会出现web服务器上传到对象存储服务器失败的情况，但是只要上传到web服务器就会当作上传成功，")
public class BatchUploadFileVo implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    @Schema(description = "key为文件名，value为文件访问地址")
    private final Map<String, String> successMap = new HashMap<>();
    @Schema(description = "key为文件名，value为上传失败原因")
    private final Map<String, String> errorMap = new HashMap<>();
    @Schema(description = "上传失败的文件列表")
    private final List<String> errFiles = new ArrayList<>();

    /**
     * 上传失败的文件
     *
     * @param fileName    文件名
     * @param erroMessage 错误信息
     */
    public void putErrorFile(String fileName, String erroMessage) {
        this.errorMap.put(fileName, erroMessage);
        this.errFiles.add(fileName);
    }

    /**
     * 上传成功的文件
     *
     * @param fileName 文件名
     * @param url      访问地址
     */
    public void putSuccessFile(String fileName, String url) {
        this.successMap.put(fileName, url);
    }
}
